#ifndef ACTIONMANAGER_H
#define ACTIONMANAGER_H
#include <QAction>
#include <QMenu>
#include <QObject>

class ActionManager : public QObject
{
    Q_OBJECT
public:
    explicit ActionManager(QObject* parent = nullptr);

    static ActionManager* instance() { return instance_; }

    QAction* loginAction() const { return login_action_; }
    QAction* registerAccountAction() const { return register_account_action_; }
    QAction* logoutAction() const { return logout_action_; }
    QAction* editProfileAction() const { return edit_profile_action_; }
    QAction* deleteAccountAction() const { return delete_account_action_; }
    QAction* aboutAction() const { return about_action_; }
    QAction* websiteAction() const { return website_action_; }
    QAction* checkVersionAction() const { return check_version_action_; }
    QAction* exitAction() const { return exit_action_; }

    QMenu* buildFileMenu(QWidget* parent);
    QMenu* buildAccountMenu(QWidget* parent = nullptr);
    QMenu* buildHelpMenu(QWidget* parent = nullptr);

private:
    static ActionManager* instance_;

    QAction* login_action_;
    QAction* register_account_action_;
    QAction* edit_profile_action_;
    QAction* change_password_action_;
    QAction* logout_action_;
    QAction* delete_account_action_;
    QAction* about_action_;
    QAction* contact_action_;
    QAction* website_action_;
    QAction* check_version_action_;
    QAction* exit_action_;
    QAction* disclaimer_action_;
};

#endif // ACTIONMANAGER_H
